package br.com.gip.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.richfaces.component.html.HtmlDataTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.gip.business.CategoriaBusiness;
import br.com.gip.exception.BusinessException;
import br.com.gip.repository.model.Categoria;

@Scope("session")
@Controller("categoriaController")
public class CategoriaController implements Serializable {

	private static final long serialVersionUID = 7923950988849087462L;

	@Autowired
	private CategoriaBusiness categoriaBusiness;
	
	private List<Categoria> categorias;
	
	private Categoria categoria;

	private String nomeCategoria;
	
	private HtmlDataTable dataTable;
	
	private String message; 

	public String cadastro() {
		this.message = "";
		this.categorias = new ArrayList<Categoria>();
		this.categoria = new Categoria();
		return "cadatro-categoria";
	}
	
	public String buscarCategorias() {
		this.message = "";
		this.categorias = this.categoriaBusiness.buscarCategoria(this.categoria.getNome());
		return "lista-categorias";
	}

	public String editarCategoria() {
		this.message = "";
		this.categorias = new ArrayList<Categoria>();
		this.categoria = (Categoria) this.dataTable.getRowData();
		return "editar-categoria";
	}
	
	public String cadastrarCategoria() {
		try {
			this.categoriaBusiness.salvarCategoria(this.categoria);	
		} catch (BusinessException e) {
			this.message = e.getMessage();
			return "cadastro-duplicado";
		}
		
		this.categoria = new Categoria();
		this.categorias = this.categoriaBusiness.buscarCategorias();
		this.message = "Categoria cadastrada com sucesso";
		return "cadatro-categoria-sucesso";
	}
	
	public String lista() {
		this.categoria = new Categoria();
		this.categorias = new ArrayList<Categoria>();
		this.message = "";
		return "lista-categoria";
	}
	
	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public HtmlDataTable getDataTable() {
		return dataTable;
	}

	public String getNomeCategoria() {
		return nomeCategoria;
	}

	public void setNomeCategoria(String nomeCategoria) {
		this.nomeCategoria = nomeCategoria;
	}

	public void setDataTable(HtmlDataTable dataTable) {
		this.dataTable = dataTable;
	}

	public List<Categoria> getCategorias() {
		return categorias;
	}

	public CategoriaBusiness getCategoriaBusiness() {
		return categoriaBusiness;
	}

	public void setCategoriaBusiness(CategoriaBusiness categoriaBusiness) {
		this.categoriaBusiness = categoriaBusiness;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public void setCategorias(List<Categoria> categorias) {
		this.categorias = categorias;
	}

	
}
